<!-- 分享 弹出层组件 -->
<template>
	<uni-popup ref="popup" type="bottom" background-color="#fff" style="z-index:999;">
		<!-- 分享标题 -->
		<view class="text-center py-2 font-md border-bottom border-light-secondary">分享到</view>
		<view class="flex align-center">
			<view
				class="flex-1 flex flex-column align-center justify-center py-2"
				v-for="(item,index) in providerList"
				:key="index"
				hover-class="bg-light"
				@tap="share(item)"
			>
			<!-- 图标渲染 -->
				<view
					class="iconfont text-white flex align-center justify-center font-lg rounded-circle"
					:class="item.icon + ' ' + item.color"
					style="width:100rpx;height: 100rpx;"
				></view>
				<!-- 文本渲染 -->
				<text class="font-sm mt-1 text-muted">{{ item.name }}</text>
			</view>
		</view>
		<!-- 取消按钮 -->
		<view class="text-center py-2 font-md border-top border-light-secondary" @click="close">取消</view>
	</uni-popup>
</template>

<script>
	export default{
		data(){
			return{
				title: '',  // 分享标题
				shareText: '',// 分享的内容
				href:"", // 分享的连接
				image: '', // 分享的封面图
				shareType:0,
				// 分享图标 数据
				providerList: []
			}
		},
		// 计算属性（直接复制的)
		computed:{
			isDisableButton() {
				return function(item) {
					if(this.shareType === 0 && item.id === 'qq'){
						return true;
					}
					if(this.shareType === 5 && item.name !== '分享到微信好友'){
						return true;
					}
					return false;
				}
			}
		},
		// 微信小程序 分享 （直接复制的)
		onShareAppMessage() {
			return {
				title: this.shareText ? this.shareText : "点击查看详情",
				path: '/pages/tabBar/component/component',
				imageUrl:this.image ? this.image : 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/b6304f00-5168-11eb-bd01-97bc1429a9ff.png'
			}
		},
		// 组件销毁之前 （直接复制的)
		beforeDestroy(){
			this.shareText='CSDN个人博客，分享遇见的BUG',
			this.href = 'http://t.csdn.cn/C2rzS',
			this.image='';
		},
		// 监听页面初次渲染完成。注意如果渲染速度快，会在页面进入动画完成前触发
		mounted() {
			uni.getProvider({
				service: 'share',
				success: (e) => {
					// console.log('success', e);
					let data = []
					for (let i = 0; i < e.provider.length; i++) {
						switch (e.provider[i]) {
							case 'weixin':
								data.push({
									name: '微信好友',
									id: 'weixin',
									icon: 'icon-weixin', //图标
								    color: 'bg-success', //颜色
									sort:0
								})
								data.push({
									name: '朋友圈',
									id: 'weixin',
									type:'WXSenceTimeline',
									icon: 'icon-huati', //图标
									color: 'bg-dark', //颜色
									sort:1
								})
								break;
							case 'sinaweibo':
								data.push({
									name: '新浪微博',
									id: 'sinaweibo',
									icon: 'icon-xinlangweibo', //图标
									color: 'bg-danger', //颜色
									sort:2
								})
								break;
							case 'qq':
								data.push({
									name: 'QQ好友',
									id: 'qq',
									icon: 'icon-QQ', //图标
									color: 'bg-primary', //颜色
									sort:3
								})
								break;
							default:
								break;
						}
					}
					this.providerList = data.sort((x,y) => {
						return x.sort - y.sort
					});
				},
				fail: (e) => {
					console.log('获取分享通道失败', e);
					uni.showModal({
						content:'获取分享通道失败',
						showCancel:false
					})
				}
			});
		},
		// 存放所有事件
		methods:{
			// 打开弹出层 (并接收detail组件传入的数据)
			open(options){
				this.title = options.title // 分享标题
				this.shareText = options.shareText // 分享内容
				this.href = options.href // 分享连接
				this.image = options.image // 封面图
				this.$refs.popup.open()
			},
			// 关闭弹出层
			close() {
				this.$refs.popup.close()
			},
			// 分享的方法 （直接复制的）
			async share(e) {
				console.log('分享通道:'+ e.id +'； 分享类型:' + this.shareType);
				
				if(!this.shareText && (this.shareType === 1 || this.shareType === 0)){
					uni.showModal({
						content:'分享内容不能为空',
						showCancel:false
					})
					return;
				}
				// || this.shareType === 0
				if(!this.image && (this.shareType === 2 )){
					uni.showModal({
						content:'分享图片不能为空',
						showCancel:false
					})
					return;
				}
				// 如果是qq 或 新浪微博 ，shareType 类型为1 ，分享纯文字。0就是图文皆可
				if(e.id==='qq'||e.id==='sinaweibo'){
					this.shareType=1
				}
				
				let shareOPtions = {
					provider: e.id,
					scene: e.type && e.type === 'WXSenceTimeline' ? 'WXSenceTimeline' : 'WXSceneSession', //WXSceneSession”分享到聊天界面，“WXSenceTimeline”分享到朋友圈，“WXSceneFavorite”分享到微信收藏     
					type: this.shareType,
					success: (e) => {
						console.log('success', e);
						uni.showModal({
							content: '已分享',
							showCancel:false
						})
					},
					fail: (e) => {
						console.log('fail', e)
						uni.showModal({
							content: e.errMsg,
							showCancel:false
						})
					},
					complete:function(){
						console.log('分享操作结束!')
					}
				}
				
				switch (this.shareType){
					case 0:
						shareOPtions.summary = this.shareText;
						shareOPtions.imageUrl = this.image;
						shareOPtions.title = '欢迎体验uniapp';
						shareOPtions.href = 'https://uniapp.dcloud.io';
						break;
					case 1:
						shareOPtions.summary = this.shareText;
						break;
					case 2:
						shareOPtions.imageUrl = this.image;
						break;
					case 5:
						shareOPtions.imageUrl = this.image ? this.image : 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/b6304f00-5168-11eb-bd01-97bc1429a9ff.png'
						shareOPtions.title = '欢迎体验uniapp';
						shareOPtions.miniProgram = {
							id:'gh_33446d7f7a26',
							path:'/pages/tabBar/component/component',
							webUrl:'https://uniapp.dcloud.io',
							type:0
						};
						break;
					default:
						break;
				}
				
				if(shareOPtions.type === 0 && plus.os.name === 'iOS'){//如果是图文分享，且是ios平台，则压缩图片 
					shareOPtions.imageUrl = await this.compress();
				}
				if(shareOPtions.type === 1 && shareOPtions.provider === 'qq'){//如果是分享文字到qq，则必须加上href和title
					shareOPtions.href = 'https://uniapp.dcloud.io';
					shareOPtions.title = '欢迎体验uniapp';
				}
				uni.share(shareOPtions);
			},
			//压缩图片 图文分享要求分享图片大小不能超过20Kb(直接复制的)
			compress(){ // 主要用于 ios 端，对图片分享要求比较高
				console.log('开始压缩');
				let img = this.image;
				return new Promise((res) => {
					var localPath = plus.io.convertAbsoluteFileSystem(img.replace('file://', ''));
					console.log('获取图片路径', localPath);
					// 压缩size
					plus.io.resolveLocalFileSystemURL(localPath, (entry) => {
						entry.file((file) => {// 可通过entry对象操作图片 
							console.log('获取文件大小:' + JSON.stringify(file));
							if(file.size > 20480) {// 压缩后size 大于20Kb
								plus.zip.compressImage({
									src: img,
									dst: img.replace('.jpg', '2222.jpg').replace('.JPG', '2222.JPG'),
									width: '10%',
									height: '10%',
									quality: 1,
									overwrite: true
								}, (event) => {
									console.log('success zip****' + event.size);
									let newImg = img.replace('.jpg', '2222.jpg').replace('.JPG', '2222.JPG');
									res(newImg);
								}, function(error) {
									uni.showModal({
										content:'分享图片太大,需要请重新选择图片!',
										showCancel:false
									})
								});
							}
						});
					}, (e) => {
						console.log('解析文件URL失败: ' + e.message);
						uni.showModal({
							content:'分享图片太大,需要请重新选择图片!',
							showCancel:false
						})
					});
				})
			}
		}
	}
</script>

<style>
</style>